/**
 * 用户编辑页面交互逻辑
 * 负责加载用户数据到表单和处理更新操作
 */
import { fetchDataById, updateDataItem } from '../../js/api.js';

/**
 * 从URL获取用户ID
 */
function getUserIdFromUrl() {
    const params = new URLSearchParams(window.location.search);
    const id = params.get('id');
    return id ? parseInt(id) : null;
}

/**
 * 加载用户数据到表单
 * @param {Object} data - 用户数据
 */
function loadUserDataToForm(data) {
    document.getElementById('userId').value = data.id;
    document.getElementById('username').value = data.username || '';
    document.getElementById('email').value = data.email || '';
    document.getElementById('role').value = data.role || 'user';
    document.getElementById('phone').value = data.phone || '';
}

/**
 * 加载用户详情数据
 */
async function loadUserData() {
    const id = getUserIdFromUrl();
    if (!id) {
        alert('无效的用户ID');
        window.location.href = 'list.html';
        return;
    }

    try {
        const data = await fetchDataById(id);
        loadUserDataToForm(data);
    } catch (error) {
        console.error('加载用户数据失败:', error);
        alert('加载用户数据失败: ' + (error.message || '未知错误'));
    }
}

/**
 * 初始化表单提交事件监听
 */
function initFormSubmit() {
    const editForm = document.getElementById('editForm');
    editForm.addEventListener('submit', async (e) => {
        e.preventDefault();

        const id = getUserIdFromUrl();
        if (!id) return;

        // 获取表单数据
        const formData = {
            username: document.getElementById('username').value.trim(),
            email: document.getElementById('email').value.trim(),
            role: document.getElementById('role').value,
            phone: document.getElementById('phone').value.trim() || null
        };

        // 只有输入了密码才添加到数据中（允许不修改密码）
        const password = document.getElementById('password').value.trim();
        if (password) {
            formData.password = password;
        }

        // 表单验证
        if (!formData.username) {
            alert('请输入用户名');
            return;
        }

        if (!formData.email) {
            alert('请输入邮箱');
            return;
        }

        // 简单邮箱格式验证
        const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
        if (!emailRegex.test(formData.email)) {
            alert('请输入有效的邮箱地址');
            return;
        }

        // 如果输入了密码，验证长度
        if (formData.password && formData.password.length < 6) {
            alert('密码长度不能少于6个字符');
            return;
        }

        try {
            // 调用API更新用户
            const success = await updateDataItem(id, formData);
            if (success) {
                alert('用户更新成功！');
                window.location.href = `detail.html?id=${id}`;
            }
        } catch (error) {
            console.error('更新用户失败:', error);
            alert('更新用户失败: ' + (error.message || '未知错误'));
        }
    });
}

// 页面加载完成后初始化
window.addEventListener('DOMContentLoaded', () => {
    loadUserData();
    initFormSubmit();
});